/**
 * 二维线性图controller
 */
app.controller('controller1', function() {
	
	//获得当前controller
	ctrl=this;
	
	//初始化X轴显示范围
	ctrl.xRange=1500;
	//初始化Y轴显示范围
	ctrl.yRange=500;
	//初始化X轴刻度
	ctrl.xScale=100;
	//初始化X轴分割数
	ctrl.xCount=15;
	//初始化Y轴刻度
	ctrl.yScale=50;
	//初始化Y轴分割数
	ctrl.yCount=10;
	//初始化X轴单位
	ctrl.xUnit="单位";
	//初始化Y轴单位
	ctrl.yUnit="单位";
	
	//分别临时记录当前折线所有数据点X、Y坐标的数组
	ctrl.polylineXData=new Array();
	ctrl.polylineYData=new Array();
	
	//保存x,y轴刻度值的数组
	ctrl.xScalesData=new Array();
	for(var i=parseFloat(ctrl.xScale);i<=parseFloat(ctrl.xRange);i+=parseFloat(ctrl.xScale)){
		ctrl.xScalesData.push(i);
	}
	ctrl.yScalesData=new Array();
	for(var i=parseFloat(ctrl.yScale);i<=parseFloat(ctrl.yRange);i+=parseFloat(ctrl.yScale)){
		ctrl.yScalesData.push(i);
	}
	
	/**
	 * 保存所有折线的总数组，当前正在绘制的折线为ctrl.polyline[ctrl.polyLineCount]，其下的元素分别为：
	 * ctrl.polyline[ctrl.polyLineCount][0]：SVG绘制折线所用points的String
	 * ctrl.polyline[ctrl.polyLineCount][1]：折线颜色值String
	 * ctrl.polyline[ctrl.polyLineCount][2]：折线宽度值float
	 * ctrl.polyline[ctrl.polyLineCount][3]：折线中的数据点数组
	 * ctrl.polyline[ctrl.polyLineCount][4]：用于显示“已添加的点”的String
	 * ctrl.polyline[ctrl.polyLineCount][5]：折线数据点半径值float
	 * ctrl.polyline[ctrl.polyLineCount][6]：是否显示数据点数据的flag，是代表""，否代表"none"
	 * ctrl.polyline[ctrl.polyLineCount][7]：变换坐标轴显示范围后的数据点坐标数组
	 * ctrl.polyline[ctrl.polyLineCount][8]：折线名称String
	 */
	ctrl.polyline=new Array();
	
	//折线数量
	ctrl.polyLineCount=0;
	//折线颜色默认为blue
	ctrl.color="blue";
	//折线宽度默认为3
	ctrl.width=3;
	//折线数据点半径默认为5
	ctrl.pointRadius=5;
	//折线数据点数据显示默认为是
	ctrl.showPointsData="是";
	//折线默认名称为"折线n"
	ctrl.lineName="折线"+ctrl.polyLineCount;
	
	//初始化当前折线参数数组
	ctrl.polyline[ctrl.polyLineCount]=new Array();
	//初始化SVG绘制折线所用points的String为空
	ctrl.polyline[ctrl.polyLineCount][0]="";
	//初始化折线颜色为默认
	ctrl.polyline[ctrl.polyLineCount][1]=ctrl.color;
	//初始化折线宽度为默认
	ctrl.polyline[ctrl.polyLineCount][2]=ctrl.width;
	//初始化折现中的数据点数组
	ctrl.polyline[ctrl.polyLineCount][3]=new Array();
	//初始化折线数据点半径为默认
	ctrl.polyline[ctrl.polyLineCount][5]=ctrl.pointRadius;
	//初始化折线数据点数据显示为默认
	ctrl.polyline[ctrl.polyLineCount][6]="";
	//初始化折线名称魏默认
	ctrl.polyline[ctrl.polyLineCount][8]=ctrl.lineName;
	
	/**
	 * 根据X轴显示范围和刻度计算X轴分割数的方法
	 */
	ctrl.calcXCount=function(){
		ctrl.xCount=ctrl.xRange/ctrl.xScale;
	};
	
	/**
	 * 根据Y轴显示范围和刻度计算X轴分割数的方法
	 */
	ctrl.calcYCount=function(){
		ctrl.yCount=ctrl.yRange/ctrl.yScale;
	};
	
	/**
	 * 根据X轴显示范围和分割数计算X轴刻度的方法
	 */
	ctrl.calcXScale=function(){
		ctrl.xScale=ctrl.xRange/ctrl.xCount;
	};
	
	/**
	 * 根据Y轴显示范围和分割数计算X轴刻度的方法
	 */
	ctrl.calcYScale=function(){
		ctrl.yScale=ctrl.yRange/ctrl.yCount;
	};
	
	/**
	 * 改变坐标轴显示范围的方法
	 */
	ctrl.changeRange=function(){
		for(var i=0;i<=ctrl.polyLineCount;i++){
			ctrl.polyline[i][7]=new Array();
			//使用slice()方法克隆数组，否则修改[7]会导致[3]的修改
			for(var j=0;j<ctrl.polyline[i][3].length;j++){
				ctrl.polyline[i][7][j]=ctrl.polyline[i][3][j].slice();
			}
			for(var j=0;j<ctrl.polyline[i][7].length;j++){
				ctrl.polyline[i][7][j][0]=ctrl.polyline[i][7][j][0]/ctrl.xRange*1500;
				ctrl.polyline[i][7][j][1]=ctrl.polyline[i][7][j][1]/ctrl.yRange*500;
			};
			ctrl.polyline[i][0]="";
			for(var j=0;j<ctrl.polyline[i][7].length;j++){
				ctrl.polyline[i][0]+=ctrl.polyline[i][7][j][0]+",";
				ctrl.polyline[i][0]+=500-ctrl.polyline[i][7][j][1]+" ";
			}
		};
		ctrl.xScalesData=new Array();
		for(var i=parseFloat(ctrl.xScale);i<=parseFloat(ctrl.xRange);i+=parseFloat(ctrl.xScale)){
			ctrl.xScalesData.push(formatFloat(i, 1));
		}
		ctrl.yScalesData=new Array();
		for(var i=parseFloat(ctrl.yScale);i<=parseFloat(ctrl.yRange);i+=parseFloat(ctrl.yScale)){
			ctrl.yScalesData.push(formatFloat(i, 1));
		}
	};
		
	/**
	 * 改变折线颜色的方法
	 */
	ctrl.changeColor=function(color){
		if(color!="other"){
			ctrl.color=color;
		}
		else{
			ctrl.color=$('#colorSelector div').css('background-color'); 
		}
		ctrl.polyline[ctrl.polyLineCount][1]=ctrl.color;
	};
	
	/**
	 * 改变折线宽度的方法
	 */
	ctrl.changeWidth=function(width){
		if(width==0){
			ctrl.width=$('#inputWidth').val();
		}
		else if(width=='-'){
			if(ctrl.width==1){
				return;
			}
			ctrl.width=parseFloat(ctrl.width)-1;
		}
		else if(width=='+'){
			ctrl.width=parseFloat(ctrl.width)+1;
		}
		else{
			ctrl.width=width;
		}
		ctrl.polyline[ctrl.polyLineCount][2]=ctrl.width;
	};
	
	/**
	 * 改变折线数据点半径的方法
	 */
	ctrl.changePointRadius=function(radius){
		if(radius==0){
			ctrl.pointRadius=$('#inputPointRadius').val();
		}
		else if(radius=='-'){
			if(ctrl.pointRadius==1){
				return;
			}
			ctrl.pointRadius=parseFloat(ctrl.pointRadius)-1;
		}
		else if(radius=='+'){
			ctrl.pointRadius=parseFloat(ctrl.pointRadius)+1;
		}
		else{
			ctrl.pointRadius=radius;
		}
		ctrl.polyline[ctrl.polyLineCount][5]=ctrl.pointRadius;
	};
	
	/**
	 * 改变折线数据点数据显示的方法
	 */
	ctrl.changePointsData=function(){
		if(ctrl.showPointsData=="是"){
			ctrl.showPointsData="否";
			ctrl.polyline[ctrl.polyLineCount][6]="none";
		}
		else{
			ctrl.showPointsData="是";
			ctrl.polyline[ctrl.polyLineCount][6]="";
		}
	};
	
	/**
	 * 添加下一条折线的方法
	 */
	ctrl.addLine = function(){
		//保存当前折线名称
		ctrl.polyline[ctrl.polyLineCount][8]=ctrl.lineName;
		
		//折线数量+1
		ctrl.polyLineCount++;
		
		//初始化当前折线参数数组
		ctrl.polyline[ctrl.polyLineCount]=new Array();
		//初始化SVG绘制折线所用points的String为空
		ctrl.polyline[ctrl.polyLineCount][0]="";
		//初始化折线颜色为默认
		ctrl.polyline[ctrl.polyLineCount][1]=ctrl.color;
		//初始化折线宽度为默认
		ctrl.polyline[ctrl.polyLineCount][2]=ctrl.width;
		//初始化折现中的数据点数组
		ctrl.polyline[ctrl.polyLineCount][3]=new Array();
		//初始化折线数据点半径为默认
		ctrl.polyline[ctrl.polyLineCount][5]=ctrl.pointRadius;
		//初始化折线数据点数据显示为默认
		ctrl.polyline[ctrl.polyLineCount][6]="";
		//初始化默认折线名称为"折线n"
		ctrl.lineName="折线"+ctrl.polyLineCount;
		//初始化折线名称为默认
		ctrl.polyline[ctrl.polyLineCount][8]=ctrl.lineName;
		
		
		//清空分别临时记录当前折线所有数据点X、Y坐标的数组
		ctrl.polylineXData=new Array();
		ctrl.polylineYData=new Array();
	};
	
	/**
	 * 添加点的方法
	 */
	ctrl.addPoint = function(){
		
		//判断添加的点坐标是否为空，为空则不添加直接return
		if(ctrl.x==undefined || ctrl.y==undefined || ctrl.x=="" || ctrl.y==""){
			alert("请输入点的坐标！");
			return;
		}
		//判断添加的点是否和以前的相同，相同则直接不添加并直接return
		for(var i=0;i<ctrl.polylineXData.length;i++){
			if(parseFloat(ctrl.x)==ctrl.polylineXData[i] && parseFloat(ctrl.y)==ctrl.polylineYData[i]){
				alert("禁止添加相同点！");
				return;
			}
		}
		
		//不相同则添加进记录折线X、Y坐标的数组
		ctrl.polylineXData.push(parseFloat(ctrl.x));
		ctrl.polylineYData.push(parseFloat(ctrl.y));
		
		//对两个数组排序，按照x坐标从小到大排序，否则画出的图不是折线图
		for(var i=0;i<ctrl.polylineXData.length-1;i++){
			if(ctrl.polylineXData[i]>ctrl.polylineXData[i+1]){
				var temp=ctrl.polylineXData[i];
				ctrl.polylineXData[i]=ctrl.polylineXData[i+1];
				ctrl.polylineXData[i+1]=temp;
				temp=ctrl.polylineYData[i];
				ctrl.polylineYData[i]=ctrl.polylineYData[i+1];
				ctrl.polylineYData[i+1]=temp;
				i=-1;
			}
			else if(ctrl.polylineXData[i]==ctrl.polylineXData[i+1]){
				if(ctrl.polylineYData[i]>ctrl.polylineYData[i+1]){
					var temp=ctrl.polylineYData[i];
					ctrl.polylineYData[i]=ctrl.polylineYData[i+1];
					ctrl.polylineYData[i+1]=temp;
				}
			}
		}

		//初始化当前折线参数组
		ctrl.polyline[ctrl.polyLineCount]=new Array();
		//初始化折线颜色为默认
		ctrl.polyline[ctrl.polyLineCount][1]=ctrl.color;
		//初始化折线宽度为默认
		ctrl.polyline[ctrl.polyLineCount][2]=ctrl.width;
		//初始化折线数据点半径为默认
		ctrl.polyline[ctrl.polyLineCount][5]=ctrl.pointRadius;
		//初始化折线数据点数据显示为默认
		if(ctrl.showPointsData=="是"){
			ctrl.polyline[ctrl.polyLineCount][6]="";
		}
		else{
			ctrl.polyline[ctrl.polyLineCount][6]="none";
		}
		
		//初始化折线中的数据点数组
		ctrl.polyline[ctrl.polyLineCount][3]=new Array();
		//初始化坐标轴变换后的数据点数组
		ctrl.polyline[ctrl.polyLineCount][7]=new Array();
		
		for(var i=0;i<ctrl.polylineXData.length;i++){
			ctrl.polyline[ctrl.polyLineCount][3].push([ctrl.polylineXData[i],ctrl.polylineYData[i]]);
			ctrl.polyline[ctrl.polyLineCount][7].push([ctrl.polylineXData[i]/ctrl.xRange*1500,ctrl.polylineYData[i]/ctrl.yRange*500]);
		}	
		
		//初始化SVG绘制折线所用points的String为空
		ctrl.polyline[ctrl.polyLineCount][0]="";
		for(var i=0;i<ctrl.polyline[ctrl.polyLineCount][7].length;i++){
			ctrl.polyline[ctrl.polyLineCount][0]+=ctrl.polyline[ctrl.polyLineCount][7][i][0]+",";
			ctrl.polyline[ctrl.polyLineCount][0]+=500-ctrl.polyline[ctrl.polyLineCount][7][i][1]+" ";
		}
			
		//初始化“已添加的点”String
		ctrl.polyline[ctrl.polyLineCount][4]=new Array();
		
		for(var i=0;i<ctrl.polylineXData.length;i++){
			var temp=ctrl.polylineXData[i]+","+ctrl.polylineYData[i];
			ctrl.polyline[ctrl.polyLineCount][4].push(temp);
		}
	};
	
	/**
	 * 展示演示数据的方法
	 */
	ctrl.showDemo = function(){
		//初始化X轴显示范围
		ctrl.xRange=1500;
		//初始化Y轴显示范围
		ctrl.yRange=500;
		//初始化X轴刻度
		ctrl.xScale=100;
		//初始化X轴分割数
		ctrl.xCount=15;
		//初始化Y轴刻度
		ctrl.yScale=50;
		//初始化Y轴分割数
		ctrl.yCount=10;
		
		//分别临时记录当前折线所有数据点X、Y坐标的数组
		ctrl.polylineXData=new Array();
		ctrl.polylineYData=new Array();
		
		//保存x,y轴刻度值的数组
		ctrl.xScalesData=new Array();
		for(var i=parseFloat(ctrl.xScale);i<=parseFloat(ctrl.xRange);i+=parseFloat(ctrl.xScale)){
			ctrl.xScalesData.push(i);
		}
		ctrl.yScalesData=new Array();
		for(var i=parseFloat(ctrl.yScale);i<=parseFloat(ctrl.yRange);i+=parseFloat(ctrl.yScale)){
			ctrl.yScalesData.push(i);
		}
		
		ctrl.polyline=new Array();
		
		//折线数量
		ctrl.polyLineCount=0;
		//折线颜色默认为blue
		ctrl.color="blue";
		//折线宽度默认为3
		ctrl.width=3;
		//折线数据点半径默认为5
		ctrl.pointRadius=5;
		//折线数据点数据显示默认为是
		ctrl.showPointsData="是";
		//折线默认名称为"折线n"
		ctrl.lineName="折线"+ctrl.polyLineCount;
		
		//初始化当前折线参数数组
		ctrl.polyline[ctrl.polyLineCount]=new Array();
		//初始化SVG绘制折线所用points的String为空
		ctrl.polyline[ctrl.polyLineCount][0]="";
		//初始化折线颜色为默认
		ctrl.polyline[ctrl.polyLineCount][1]=ctrl.color;
		//初始化折线宽度为默认
		ctrl.polyline[ctrl.polyLineCount][2]=ctrl.width;
		//初始化折现中的数据点数组
		ctrl.polyline[ctrl.polyLineCount][3]=new Array();
		//初始化折线数据点半径为默认
		ctrl.polyline[ctrl.polyLineCount][5]=ctrl.pointRadius;
		//初始化折线数据点数据显示为默认
		ctrl.polyline[ctrl.polyLineCount][6]="";
		//初始化折线名称魏默认
		ctrl.polyline[ctrl.polyLineCount][8]=ctrl.lineName;
		document.getElementById("chartTitle").innerHTML="<div style='text-align:center;'><span style='line-height:1.5;'><span style='font-size:24px;'><strong style='margin-right:-80px;'>长沙市各景区2015年游客人数统计图</strong></span></span></div>";
		ctrl.xUnit="时间（月）";
		ctrl.yUnit="人数（万）";
		ctrl.polylineXData=new Array();
		ctrl.polylineYData=new Array();
		ctrl.polyline[0]=new Array();
		ctrl.polyline[0][3]=new Array();//：折线中的数据点数组
		ctrl.polyline[0][7]=new Array();//：变换坐标轴显示范围后的数据点坐标数组
		ctrl.polylineXData.push(62.5);ctrl.polylineYData.push(317);
		ctrl.polylineXData.push(187.5);ctrl.polylineYData.push(489);
		ctrl.polylineXData.push(312.5);ctrl.polylineYData.push(92);
		ctrl.polylineXData.push(437.5);ctrl.polylineYData.push(143);
		ctrl.polylineXData.push(562.5);ctrl.polylineYData.push(226);
		ctrl.polylineXData.push(687.5);ctrl.polylineYData.push(301);
		ctrl.polylineXData.push(812.5);ctrl.polylineYData.push(335);
		ctrl.polylineXData.push(937.5);ctrl.polylineYData.push(374);
		ctrl.polylineXData.push(1062.5);ctrl.polylineYData.push(288);
		ctrl.polylineXData.push(1187.5);ctrl.polylineYData.push(465);
		ctrl.polylineXData.push(1312.5);ctrl.polylineYData.push(81);
		ctrl.polylineXData.push(1437.5);ctrl.polylineYData.push(205);
		for(var i=0;i<ctrl.polylineXData.length;i++){
			ctrl.polyline[0][3].push([ctrl.polylineXData[i],ctrl.polylineYData[i]]);
			ctrl.polyline[0][7].push([ctrl.polylineXData[i]/ctrl.xRange*1500,ctrl.polylineYData[i]/ctrl.yRange*500]);
		}
		ctrl.polyline[0][0]="";//：SVG绘制折线所用points的String
		for(var i=0;i<ctrl.polyline[0][7].length;i++){
			ctrl.polyline[0][0]+=ctrl.polyline[0][7][i][0]+",";
			ctrl.polyline[0][0]+=500-ctrl.polyline[0][7][i][1]+" ";
		}
		ctrl.polyline[0][1]="rgb(255,127,80)";//：折线颜色值String
		ctrl.width=3;
		ctrl.polyline[0][2]=3;//：折线宽度值float		
		ctrl.polyline[0][4]=new Array();//：用于显示“已添加的点”的String
		for(var i=0;i<ctrl.polylineXData.length;i++){
			var temp=ctrl.polylineXData[i]+","+ctrl.polylineYData[i];
			ctrl.polyline[0][4].push(temp);
		}
		ctrl.pointRadius=5;
		ctrl.polyline[0][5]=5;//：折线数据点半径值float
		ctrl.showPointsData="是";
		ctrl.polyline[0][6]="";//：是否显示数据点数据的flag，是代表""，否代表"none"
		ctrl.lineName="橘子洲";
		ctrl.polyline[0][8]="橘子洲";//：折线名称String
		
		ctrl.addLine();
		
		ctrl.polylineXData=new Array();
		ctrl.polylineYData=new Array();
		ctrl.polyline[1]=new Array();
		ctrl.polyline[1][3]=new Array();//：折线中的数据点数组
		ctrl.polyline[1][7]=new Array();//：变换坐标轴显示范围后的数据点坐标数组
		ctrl.polylineXData.push(62.5);ctrl.polylineYData.push(289);
		ctrl.polylineXData.push(187.5);ctrl.polylineYData.push(477);
		ctrl.polylineXData.push(312.5);ctrl.polylineYData.push(121);
		ctrl.polylineXData.push(437.5);ctrl.polylineYData.push(155);
		ctrl.polylineXData.push(562.5);ctrl.polylineYData.push(236);
		ctrl.polylineXData.push(687.5);ctrl.polylineYData.push(282);
		ctrl.polylineXData.push(812.5);ctrl.polylineYData.push(322);
		ctrl.polylineXData.push(937.5);ctrl.polylineYData.push(391);
		ctrl.polylineXData.push(1062.5);ctrl.polylineYData.push(271);
		ctrl.polylineXData.push(1187.5);ctrl.polylineYData.push(484);
		ctrl.polylineXData.push(1312.5);ctrl.polylineYData.push(155);
		ctrl.polylineXData.push(1437.5);ctrl.polylineYData.push(189);
		for(var i=0;i<ctrl.polylineXData.length;i++){
			ctrl.polyline[1][3].push([ctrl.polylineXData[i],ctrl.polylineYData[i]]);
			ctrl.polyline[1][7].push([ctrl.polylineXData[i]/ctrl.xRange*1500,ctrl.polylineYData[i]/ctrl.yRange*500]);
		}
		ctrl.polyline[1][0]="";//：SVG绘制折线所用points的String
		for(var i=0;i<ctrl.polyline[1][7].length;i++){
			ctrl.polyline[1][0]+=ctrl.polyline[1][7][i][0]+",";
			ctrl.polyline[1][0]+=500-ctrl.polyline[1][7][i][1]+" ";
		}
		ctrl.color="rgb(47,197,214)";
		ctrl.polyline[1][1]="rgb(47,197,214)";//：折线颜色值String
		ctrl.width=3;
		ctrl.polyline[1][2]=3;//：折线宽度值float		
		ctrl.polyline[1][4]=new Array();//：用于显示“已添加的点”的String
		for(var i=0;i<ctrl.polylineXData.length;i++){
			var temp=ctrl.polylineXData[i]+","+ctrl.polylineYData[i];
			ctrl.polyline[1][4].push(temp);
		}
		ctrl.pointRadius=5;
		ctrl.polyline[1][5]=5;//：折线数据点半径值float
		ctrl.showPointsData="是";
		ctrl.polyline[1][6]="";//：是否显示数据点数据的flag，是代表""，否代表"none"
		ctrl.lineName="岳麓山";
		ctrl.polyline[1][8]="岳麓山";//：折线名称String
	};
	
});




































/**
 * 二维柱状图controller
 */
app.controller('controller2', function($scope) {
	
	//获得当前controller
	ctrl=this;
	
	//初始化X轴显示范围
	ctrl.xRange=1500;
	//初始化Y轴显示范围
	ctrl.yRange=500;
	//初始化X轴刻度
	ctrl.xScale=125;
	//初始化X轴分割数
	ctrl.xCount=12;
	//初始化Y轴刻度
	ctrl.yScale=50;
	//初始化Y轴分割数
	ctrl.yCount=10;
	//初始化X轴单位
	ctrl.xUnit="单位";
	//初始化Y轴单位
	ctrl.yUnit="单位";
	
	//保存x,y轴刻度值的数组
	ctrl.xScalesData=new Array();
	for(var i=parseFloat(ctrl.xScale);i<=parseFloat(ctrl.xRange);i+=parseFloat(ctrl.xScale)){
		ctrl.xScalesData.push(i);
	}
	ctrl.yScalesData=new Array();
	for(var i=parseFloat(ctrl.yScale);i<=parseFloat(ctrl.yRange);i+=parseFloat(ctrl.yScale)){
		ctrl.yScalesData.push(i);
	}	
	
	//当前正输入的数据处于X轴的标签位置序号
	ctrl.x=0;
	//当前柱图序号
	ctrl.barCount=0;
	//柱图颜色默认为red
	ctrl.color="red";
	//根据数据组数决定绘制数据位置的参数
	$scope.parentIndex=0;
	//数据组默认名称为"数据n"
	ctrl.groupName="数据"+ctrl.barCount;
	//折线数据点数据显示默认为是
	ctrl.showPointsData="是";
	
	/**
	 * 保存所有柱图的总数组，当前正在绘制的柱图为ctrl.bars[ctrl.barCount]，其下的元素分别为：
	 * ctrl.bars[ctrl.barCount][0]:柱状图数组，保存了每个数据处于第几个X轴分割，数据值是多少
	 * ctrl.bars[ctrl.barCount][1]:柱状图颜色String
	 * ctrl.bars[ctrl.barCount][2]:数据组名
	 * ctrl.bars[ctrl.barCount][3]:用于显示已添加的数据的数组
	 * ctrl.bars[ctrl.barCount][4]:是否显示数据的String
	 */
	ctrl.bars=new Array();
	
	//初始化
	ctrl.bars[ctrl.barCount]=new Array();
	ctrl.bars[ctrl.barCount][0]=new Array();
	ctrl.bars[ctrl.barCount][1]=ctrl.color;
	ctrl.bars[ctrl.barCount][2]=ctrl.groupName;
	ctrl.bars[ctrl.barCount][3]=new Array();
	ctrl.bars[ctrl.barCount][4]="1";
	
	/**
	 * 添加一个数据的方法
	 */
	ctrl.addBar = function(){
		//判断是否为空，为空则不添加直接return
		if(ctrl.y==undefined || ctrl.y==""){
			alert("请输入数据值！");
			return;
		}
		ctrl.bars[ctrl.barCount][3].push(""+ctrl.x+","+ctrl.y);
		ctrl.bars[ctrl.barCount][0].push([ctrl.x++,parseFloat(ctrl.y)]);
	};
	
	/**
	 * 改变数据柱颜色的方法
	 */
	ctrl.changeColor=function(color){
		if(color!="other"){
			ctrl.color=color;
		}
		else{
			ctrl.color=$('#colorSelector div').css('background-color'); 
		}
		ctrl.bars[ctrl.barCount][1]=ctrl.color;
	};
	
	/**
	 * 添加下一组数据的方法
	 */
	ctrl.nextGroup = function(){
		//保存数据组名
		ctrl.bars[ctrl.barCount][2]=ctrl.groupName;
		//还原当前正输入的数据处于X轴的标签位置序号
		ctrl.x=0;
		//柱图数量+1
		ctrl.barCount++;
		//数据组默认名称为"数据n"
		ctrl.groupName="数据"+ctrl.barCount;
		//初始化
		ctrl.bars[ctrl.barCount]=new Array();
		ctrl.bars[ctrl.barCount][0]=new Array();
		ctrl.bars[ctrl.barCount][1]=ctrl.color;
		ctrl.bars[ctrl.barCount][2]=ctrl.groupName;
		ctrl.bars[ctrl.barCount][3]=new Array();
		ctrl.bars[ctrl.barCount][4]="1";
	};
	
	/**
	 * 根据X轴显示范围和刻度计算X轴分割数的方法
	 */
	ctrl.calcXCount=function(){
		ctrl.xCount=ctrl.xRange/ctrl.xScale;
	};
	
	/**
	 * 根据Y轴显示范围和刻度计算X轴分割数的方法
	 */
	ctrl.calcYCount=function(){
		ctrl.yCount=ctrl.yRange/ctrl.yScale;
	};
	
	/**
	 * 根据X轴显示范围和分割数计算X轴刻度的方法
	 */
	ctrl.calcXScale=function(){
		ctrl.xScale=ctrl.xRange/ctrl.xCount;
	};
	
	/**
	 * 根据Y轴显示范围和分割数计算X轴刻度的方法
	 */
	ctrl.calcYScale=function(){
		ctrl.yScale=ctrl.yRange/ctrl.yCount;
	};
	
	/**
	 * 改变坐标轴显示范围的方法
	 */
	ctrl.changeRange=function(){
		ctrl.xScalesData=new Array();
		for(var i=parseFloat(ctrl.xScale);i<=parseFloat(ctrl.xRange);i+=parseFloat(ctrl.xScale)){
			ctrl.xScalesData.push(formatFloat(i, 1));
		}
		ctrl.yScalesData=new Array();
		for(var i=parseFloat(ctrl.yScale);i<=parseFloat(ctrl.yRange);i+=parseFloat(ctrl.yScale)){
			ctrl.yScalesData.push(formatFloat(i, 1));
		}
	};
	
	/**
	 * 改变折线数据点数据显示的方法
	 */
	ctrl.changePointsData=function(){
		if(ctrl.showPointsData=="是"){
			ctrl.showPointsData="否";
			ctrl.bars[ctrl.barCount][4]="0";
		}
		else{
			ctrl.showPointsData="是";
			ctrl.bars[ctrl.barCount][4]="1";
		}
	};

	/**
	 * 展示演示数据的方法
	 */
	ctrl.showDemo = function(){
		
		//初始化X轴显示范围
		ctrl.xRange=1500;
		//初始化Y轴显示范围
		ctrl.yRange=500;
		//初始化X轴刻度
		ctrl.xScale=125;
		//初始化X轴分割数
		ctrl.xCount=12;
		//初始化Y轴刻度
		ctrl.yScale=50;
		//初始化Y轴分割数
		ctrl.yCount=10;
		
		//保存x,y轴刻度值的数组
		ctrl.xScalesData=new Array();
		for(var i=parseFloat(ctrl.xScale);i<=parseFloat(ctrl.xRange);i+=parseFloat(ctrl.xScale)){
			ctrl.xScalesData.push(i);
		}
		ctrl.yScalesData=new Array();
		for(var i=parseFloat(ctrl.yScale);i<=parseFloat(ctrl.yRange);i+=parseFloat(ctrl.yScale)){
			ctrl.yScalesData.push(i);
		}	
		
		//当前正输入的数据处于X轴的标签位置序号
		ctrl.x=0;
		//当前柱图序号
		ctrl.barCount=0;
		//柱图颜色默认为red
		ctrl.color="red";
		//根据数据组数决定绘制数据位置的参数
		$scope.parentIndex=0;
		//数据组默认名称为"数据n"
		ctrl.groupName="数据"+ctrl.barCount;
		//折线数据点数据显示默认为是
		ctrl.showPointsData="是";
		
		ctrl.bars=new Array();
		
		//初始化
		ctrl.bars[ctrl.barCount]=new Array();
		ctrl.bars[ctrl.barCount][0]=new Array();
		ctrl.bars[ctrl.barCount][1]=ctrl.color;
		ctrl.bars[ctrl.barCount][2]=ctrl.groupName;
		ctrl.bars[ctrl.barCount][3]=new Array();
		ctrl.bars[ctrl.barCount][4]="1";
		
		document.getElementById("chartTitle").innerHTML="<div style='text-align:center;'><span style='line-height:1.5;'><span style='font-size:24px;'><strong style='margin-right:-80px;'>长沙市各景区2015年游客人数统计图</strong></span></span></div>";
		
		ctrl.xUnit="时间（月）";
		ctrl.yUnit="人数（万）";
		
		//初始化
		ctrl.bars[ctrl.barCount]=new Array();
		ctrl.bars[ctrl.barCount][0]=new Array();
		ctrl.bars[ctrl.barCount][1]=ctrl.color;
		ctrl.bars[ctrl.barCount][2]=ctrl.groupName;
		ctrl.bars[ctrl.barCount][3]=new Array();
		ctrl.bars[ctrl.barCount][4]="1";
		
		ctrl.bars[ctrl.barCount][0].push([1,parseFloat(317)]);
		ctrl.bars[ctrl.barCount][3].push("1,"+317);
		ctrl.bars[ctrl.barCount][0].push([2,parseFloat(489)]);
		ctrl.bars[ctrl.barCount][3].push("2,"+489);
		ctrl.bars[ctrl.barCount][0].push([3,parseFloat(92)]);
		ctrl.bars[ctrl.barCount][3].push("3,"+92);
		ctrl.bars[ctrl.barCount][0].push([4,parseFloat(143)]);
		ctrl.bars[ctrl.barCount][3].push("4,"+143);
		ctrl.bars[ctrl.barCount][0].push([5,parseFloat(226)]);
		ctrl.bars[ctrl.barCount][3].push("5,"+226);
		ctrl.bars[ctrl.barCount][0].push([6,parseFloat(291)]);
		ctrl.bars[ctrl.barCount][3].push("6,"+291);
		ctrl.bars[ctrl.barCount][0].push([7,parseFloat(335)]);
		ctrl.bars[ctrl.barCount][3].push("7,"+335);
		ctrl.bars[ctrl.barCount][0].push([8,parseFloat(374)]);
		ctrl.bars[ctrl.barCount][3].push("8,"+374);
		ctrl.bars[ctrl.barCount][0].push([9,parseFloat(288)]);
		ctrl.bars[ctrl.barCount][3].push("9,"+288);
		ctrl.bars[ctrl.barCount][0].push([10,parseFloat(465)]);
		ctrl.bars[ctrl.barCount][3].push("10,"+465);
		ctrl.bars[ctrl.barCount][0].push([11,parseFloat(81)]);
		ctrl.bars[ctrl.barCount][3].push("11,"+81);
		ctrl.bars[ctrl.barCount][0].push([12,parseFloat(205)]);
		ctrl.bars[ctrl.barCount][3].push("12,"+205);
		

		ctrl.bars[ctrl.barCount][1]="rgb(31, 222, 219)";
		ctrl.groupName="橘子洲";
		ctrl.bars[ctrl.barCount][2]="橘子洲";
		
		ctrl.nextGroup();
		
		//初始化
		ctrl.bars[ctrl.barCount]=new Array();
		ctrl.bars[ctrl.barCount][0]=new Array();
		ctrl.bars[ctrl.barCount][1]=ctrl.color;
		ctrl.bars[ctrl.barCount][2]=ctrl.groupName;
		ctrl.bars[ctrl.barCount][3]=new Array();
		ctrl.bars[ctrl.barCount][4]="1";
		
		ctrl.bars[ctrl.barCount][0].push([1,parseFloat(289)]);
		ctrl.bars[ctrl.barCount][3].push("1,"+289);
		ctrl.bars[ctrl.barCount][0].push([2,parseFloat(477)]);
		ctrl.bars[ctrl.barCount][3].push("2,"+477);
		ctrl.bars[ctrl.barCount][0].push([3,parseFloat(121)]);
		ctrl.bars[ctrl.barCount][3].push("3,"+121);
		ctrl.bars[ctrl.barCount][0].push([4,parseFloat(155)]);
		ctrl.bars[ctrl.barCount][3].push("4,"+155);
		ctrl.bars[ctrl.barCount][0].push([5,parseFloat(236)]);
		ctrl.bars[ctrl.barCount][3].push("5,"+236);
		ctrl.bars[ctrl.barCount][0].push([6,parseFloat(282)]);
		ctrl.bars[ctrl.barCount][3].push("6,"+282);
		ctrl.bars[ctrl.barCount][0].push([7,parseFloat(322)]);
		ctrl.bars[ctrl.barCount][3].push("7,"+322);
		ctrl.bars[ctrl.barCount][0].push([8,parseFloat(391)]);
		ctrl.bars[ctrl.barCount][3].push("8,"+391);
		ctrl.bars[ctrl.barCount][0].push([9,parseFloat(271)]);
		ctrl.bars[ctrl.barCount][3].push("9,"+271);
		ctrl.bars[ctrl.barCount][0].push([10,parseFloat(484)]);
		ctrl.bars[ctrl.barCount][3].push("10,"+484);
		ctrl.bars[ctrl.barCount][0].push([11,parseFloat(155)]);
		ctrl.bars[ctrl.barCount][3].push("11,"+155);
		ctrl.bars[ctrl.barCount][0].push([12,parseFloat(189)]);
		ctrl.bars[ctrl.barCount][3].push("12,"+189);

		ctrl.color="rgb(235, 18, 109)";
		ctrl.bars[ctrl.barCount][1]="rgb(235, 18, 109)";
		ctrl.groupName="岳麓山";
		ctrl.bars[ctrl.barCount][2]="岳麓山";
		ctrl.x=12;
	};
	
});



































/**
 * 二维饼状图controller
 */
app.controller('controller3', function() {
	
	ctrl=this;
	
	//当前饼图的总数值
	ctrl.sum=0;
	//最后一块饼的坐标
	ctrl.axisString="1000,250";
	//当前输入的饼数值
	ctrl.value="";
	//饼颜色默认为red
	ctrl.color="red";
	//饼的个数
	ctrl.pieCount=0;
	//当前输入的饼名称
	ctrl.name="饼图"+ctrl.pieCount;
	//是否显示数据值与百分比
	ctrl.dataShown="是";
	
	/**
	 * 储存每一块饼的数组，其中元素表示：
	 * ctrl.pies[0]：饼的数值
	 * ctrl.pies[1]：饼的path String
	 * ctrl.pies[2]：饼的颜色
	 * ctrl.pies[3]：饼的名称
	 * ctrl.pies[4]：数据块数值显示的坐标
	 * ctrl.pies[5]：数据块数值百分比的值
	 */
	ctrl.pies=new Array();
	
	//初始化
	ctrl.pies[0]=new Array();
	ctrl.pies[1]=new Array();
	ctrl.pies[2]=new Array();
	ctrl.pies[3]=new Array();
	ctrl.pies[4]=new Array();
	ctrl.pies[5]=new Array();
	
	/**
	 * 添加一块饼的方法
	 */
	ctrl.addPie = function(){
		ctrl.pieCount++;
		ctrl.value=parseFloat(ctrl.value);
		ctrl.pies[0].push(ctrl.value);
		ctrl.sum+=ctrl.value;
		ctrl.pies[1]=new Array();
		var tempSum=0;
		ctrl.pies[4]=new Array();
		ctrl.pies[5]=new Array();
		for(var i=0;i<ctrl.pies[0].length;i++){
			tempSum+=ctrl.pies[0][i];
			ctrl.pies[1].push(ctrl.calcPiePath(ctrl.sum,tempSum,ctrl.pies[0][i]));
		}
		ctrl.pies[2].push(ctrl.color);
		ctrl.pies[3].push(ctrl.name);
		ctrl.name="饼图"+ctrl.pieCount;
	};
	
	/**
	 * 计算饼图path的方法
	 * @param sum 当前饼图的总数值
	 * @param tempSum 当前以及之前要画的饼的总数值
	 * @param value 当前饼的数值
	 */
	ctrl.calcPiePath = function(sum,tempSum,value){
		var path="M750,250 L";
		path+=(ctrl.axisString+" A250,250 0 ");
		if(value/sum>0.5){
			path+="1,1 ";
		}
		else{
			path+="0,1 ";
		}
		var angle=tempSum/sum*2*Math.PI;
		var textAngle=(tempSum-value/2)/sum*2*Math.PI;
		ctrl.axisString=(250*Math.cos(angle)+750)+","+(250*Math.sin(angle)+250);
		var tempY=250*Math.sin(textAngle)+250;
		if(tempY<=15){
			tempY=15;
		}
		ctrl.pies[4].push([(250*Math.cos(textAngle)+750),tempY]);
		ctrl.pies[5].push(formatFloat(value/sum*100, 2)+"%");
		path+=ctrl.axisString+" z";
		return path;
	};
	
	/**
	 * 改变数据块颜色的方法
	 */
	ctrl.changeColor=function(color){
		if(color!="other"){
			ctrl.color=color;
		}
		else{
			ctrl.color=$('#colorSelector div').css('background-color'); 
		}
		ctrl.pies[2][ctrl.pieCount-1]=ctrl.color;
	};
	
	/**
	 * 切换是否显示数据值与百分比的方法
	 */
	ctrl.changeDataShown=function(){
		if(ctrl.dataShown=="是"){
			ctrl.dataShown="否";
		}
		else{
			ctrl.dataShown="是";
		}
	};
	
	/**
	 * 展示演示数据的方法
	 */
	ctrl.showDemo = function(){
		
		document.getElementById("chartTitle").innerHTML="<div style='text-align:center;'><span style='line-height:1.5;'><span style='font-size:24px;'><strong style='margin-right:-100px;'>长沙市各景区2015年1月游客人数统计图（单位：人）</strong></span></span></div>";
		//当前饼图的总数值
		ctrl.sum=0;
		//最后一块饼的坐标
		ctrl.axisString="1000,250";
		//当前输入的饼数值
		ctrl.value="";
		//饼颜色默认为red
		ctrl.color="red";
		//饼的个数
		ctrl.pieCount=0;
		//当前输入的饼名称
		ctrl.name="饼图"+ctrl.pieCount;
		//是否显示数据值与百分比
		ctrl.dataShown="是";
		
		ctrl.pies=new Array();
		
		//初始化
		ctrl.pies[0]=new Array();
		ctrl.pies[1]=new Array();
		ctrl.pies[2]=new Array();
		ctrl.pies[3]=new Array();
		ctrl.pies[4]=new Array();
		ctrl.pies[5]=new Array();
		
		ctrl.pieCount++;
		ctrl.value=parseFloat(23486);
		ctrl.pies[0].push(ctrl.value);
		ctrl.sum+=ctrl.value;
		ctrl.pies[1]=new Array();
		var tempSum=0;
		ctrl.pies[4]=new Array();
		ctrl.pies[5]=new Array();
		for(var i=0;i<ctrl.pies[0].length;i++){
			tempSum+=ctrl.pies[0][i];
			ctrl.pies[1].push(ctrl.calcPiePath(ctrl.sum,tempSum,ctrl.pies[0][i]));
		}
		ctrl.pies[2].push("rgb(90,177,239)");
		ctrl.pies[3].push("橘子洲");
		
		ctrl.pieCount++;
		ctrl.value=parseFloat(13573);
		ctrl.pies[0].push(ctrl.value);
		ctrl.sum+=ctrl.value;
		ctrl.pies[1]=new Array();
		var tempSum=0;
		ctrl.pies[4]=new Array();
		ctrl.pies[5]=new Array();
		for(var i=0;i<ctrl.pies[0].length;i++){
			tempSum+=ctrl.pies[0][i];
			ctrl.pies[1].push(ctrl.calcPiePath(ctrl.sum,tempSum,ctrl.pies[0][i]));
		}
		ctrl.pies[2].push("rgb(255,185,128)");
		ctrl.pies[3].push("岳麓山");
		
		ctrl.pieCount++;
		ctrl.value=parseFloat(154854);
		ctrl.pies[0].push(ctrl.value);
		ctrl.sum+=ctrl.value;
		ctrl.pies[1]=new Array();
		var tempSum=0;
		ctrl.pies[4]=new Array();
		ctrl.pies[5]=new Array();
		for(var i=0;i<ctrl.pies[0].length;i++){
			tempSum+=ctrl.pies[0][i];
			ctrl.pies[1].push(ctrl.calcPiePath(ctrl.sum,tempSum,ctrl.pies[0][i]));
		}
		ctrl.pies[2].push("rgb(216,122,128)");
		ctrl.pies[3].push("马王堆");
		
		ctrl.pieCount++;
		ctrl.value=parseFloat(33532);
		ctrl.pies[0].push(ctrl.value);
		ctrl.sum+=ctrl.value;
		ctrl.pies[1]=new Array();
		var tempSum=0;
		ctrl.pies[4]=new Array();
		ctrl.pies[5]=new Array();
		for(var i=0;i<ctrl.pies[0].length;i++){
			tempSum+=ctrl.pies[0][i];
			ctrl.pies[1].push(ctrl.calcPiePath(ctrl.sum,tempSum,ctrl.pies[0][i]));
		}
		ctrl.pies[2].push("rgb(46,199,201)");
		ctrl.pies[3].push("韶山");
		
		ctrl.pieCount++;
		ctrl.value=parseFloat(31048);
		ctrl.pies[0].push(ctrl.value);
		ctrl.sum+=ctrl.value;
		ctrl.pies[1]=new Array();
		var tempSum=0;
		ctrl.pies[4]=new Array();
		ctrl.pies[5]=new Array();
		for(var i=0;i<ctrl.pies[0].length;i++){
			tempSum+=ctrl.pies[0][i];
			ctrl.pies[1].push(ctrl.calcPiePath(ctrl.sum,tempSum,ctrl.pies[0][i]));
		}
		ctrl.pies[2].push("rgb(182,162,222)");
		ctrl.pies[3].push("千龙湖");
		ctrl.name="饼图"+ctrl.pieCount;
		ctrl.value="";
	};
	
});